<?php
namespace Ana\AgendaBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
* @ORM\Entity(repositoryClass="Ana\AgendaBundle\Entity\PacienteRepository")
* @ORM\Table(name="paciente")
* @ORM\HasLifecycleCallbacks()
*/
class Paciente{
    
    /**
    * @ORM\Column(type="integer")
    * @ORM\Id
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    public $id;
    /**
    * @ORM\Column(type="string", length=20)
    */
    public $nombre;
    /**
    * @ORM\Column(type="string", length=20)
    */
    public $apellido;
    /**
    * @ORM\Column(type="string", length=20, nullable=true)
    */
    public $email;
    /**
    * @ORM\Column(type="date")
    * @Assert\Date()
    */
    public $nacimiento;
    /**
    * @ORM\Column(type="boolean")
    */
    public $sexo;
    
    /**
    * @ORM\Column(type="datetime")
    */
    public $creado;
    
    /**
    * @ORM\Column(type="datetime")
    */
    public $actualizado;
    
    /**
    * @ORM\OneToMany(targetEntity="Turno", mappedBy="paciente")
    **/
    public $turnos;
    
    /**
    * @ORM\Column(type="string", length=30, nullable=true)
    */
    public $nro_obra_social;
    
    /**
     * @ORM\ManyToOne(targetEntity="ObraSocial")
     * @ORM\JoinColumn(name="obrasocial_id", referencedColumnName="id", nullable=true)
     **/
    public $obra_social;
    
    /**
    * @ORM\OneToMany(targetEntity="RegistroClinico", mappedBy="paciente")
    **/
    public $historia_clinica; 
    
    
    public function __construct()
    {
        $this->historia_clinica = new \Doctrine\Common\Collections\ArrayCollection();
        $this->turnos = new \Doctrine\Common\Collections\ArrayCollection();
    }
    
    
    /**
    * @ORM\PrePersist
    */
    public function setCreado(){
        $this->creado = new \DateTime();
        $this->actualizado = new \DateTime();
    }
    
    /**
    * @ORM\PreUpdate
    */
    public function setActualizado()
    {
        $this->actualizado = new \DateTime();
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set nombre
     *
     * @param string $nombre
     * @return Paciente
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;

        return $this;
    }

    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }

    /**
     * Set appelido
     *
     * @param string $appelido
     * @return Paciente
     */
    public function setAppelido($appelido)
    {
        $this->appelido = $appelido;

        return $this;
    }

    /**
     * Get appelido
     *
     * @return string 
     */
    public function getAppelido()
    {
        return $this->appelido;
    }

    /**
     * Set email
     *
     * @param string $email
     * @return Paciente
     */
    public function setEmail($email)
    {
        $this->email = $email;

        return $this;
    }

    /**
     * Get email
     *
     * @return string 
     */
    public function getEmail()
    {
        return $this->email;
    }

    /**
     * Set nacimiento
     *
     * @param \DateTime $nacimiento
     * @return Paciente
     */
    public function setNacimiento($nacimiento)
    {
        $this->nacimiento = $nacimiento;

        return $this;
    }

    /**
     * Get nacimiento
     *
     * @return \DateTime 
     */
    public function getNacimiento()
    {
        return $this->nacimiento;
    }

    /**
     * Set sexo
     *
     * @param boolean $sexo
     * @return Paciente
     */
    public function setSexo($sexo)
    {
        $this->sexo = $sexo;

        return $this;
    }

    /**
     * Get sexo
     *
     * @return boolean 
     */
    public function getSexo()
    {
        return $this->sexo;
    }

    /**
     * Get creado
     *
     * @return \DateTime 
     */
    public function getCreado()
    {
        return $this->creado;
    }

    /**
     * Get actualizado
     *
     * @return \DateTime 
     */
    public function getActualizado()
    {
        return $this->actualizado;
    }
    

    /**
     * Add turnos
     *
     * @param \Ana\AgendaBundle\Entity\Turno $turnos
     * @return Paciente
     */
    public function addTurno(\Ana\AgendaBundle\Entity\Turno $turnos)
    {
        $this->turnos[] = $turnos;

        return $this;
    }

    /**
     * Remove turnos
     *
     * @param \Ana\AgendaBundle\Entity\Turno $turnos
     */
    public function removeTurno(\Ana\AgendaBundle\Entity\Turno $turnos)
    {
        $this->turnos->removeElement($turnos);
    }

    /**
     * Get turnos
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getTurnos()
    {
        return $this->turnos;
    }

    /**
     * Set nro_obra_social
     *
     * @param string $nroObraSocial
     * @return Paciente
     */
    public function setNroObraSocial($nroObraSocial)
    {
        $this->nro_obra_social = $nroObraSocial;

        return $this;
    }

    /**
     * Get nro_obra_social
     *
     * @return string 
     */
    public function getNroObraSocial()
    {
        return $this->nro_obra_social;
    }

    /**
     * Set obra_social
     *
     * @param \Ana\AgendaBundle\Entity\ObraSocial $obraSocial
     * @return Paciente
     */
    public function setObraSocial(\Ana\AgendaBundle\Entity\ObraSocial $obraSocial = null)
    {
        $this->obra_social = $obraSocial;

        return $this;
    }

    /**
     * Get obra_social
     *
     * @return \Ana\AgendaBundle\Entity\ObraSocial 
     */
    public function getObraSocial()
    {
        return $this->obra_social;
    }

    /**
     * Add historia_clinica
     *
     * @param \Ana\AgendaBundle\Entity\RegistroClinico $historiaClinica
     * @return Paciente
     */
    public function addHistoriaClinica(\Ana\AgendaBundle\Entity\RegistroClinico $historiaClinica)
    {
        $this->historia_clinica[] = $historiaClinica;

        return $this;
    }

    /**
     * Remove historia_clinica
     *
     * @param \Ana\AgendaBundle\Entity\RegistroClinico $historiaClinica
     */
    public function removeHistoriaClinica(\Ana\AgendaBundle\Entity\RegistroClinico $historiaClinica)
    {
        $this->historia_clinica->removeElement($historiaClinica);
    }

    /**
     * Get historia_clinica
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getHistoriaClinica()
    {
        return $this->historia_clinica;
    }

    /**
     * Set apellido
     *
     * @param string $apellido
     * @return Paciente
     */
    public function setApellido($apellido)
    {
        $this->apellido = $apellido;

        return $this;
    }

    /**
     * Get apellido
     *
     * @return string 
     */
    public function getApellido()
    {
        return $this->apellido;
    }
}
